package domainmodel;

public final class Kaart {
    private int nummer;
    private String type;
    private boolean omgedraaid;

    public Kaart(String k, int n){
        setType(k);
        setNummer(n);
    }

    public int compareTo(Kaart k){
        return 1;
    }

    
    public boolean equals(Object o){
        if (o instanceof Kaart){
            Kaart k = (Kaart) o;
            if (this.getType().equals(k.getType()) && this.getNummer() == k.getNummer()){
                return true;
            }
        }
        return false;
    }

    
    public String toString(){
        if (omgedraaid == true){
            if(nummer == 11){
                return getType() + " Boer";
            }
            if(nummer == 12){
                return getType() + " Dame";
            }
            if(nummer == 13){
                return getType() + " Heer";
            }
            else{
                return getType() + " " + getNummer();
            }
        }else{
            return "--------";
        }
    }

    protected void setType(String t) throws IllegalArgumentException{
        if (t.equals("Harten") || t.equals("Ruiten") || t.equals("Klaveren") || t.equals("Schoppen")){
            this.type = t;
        }else{
            throw new IllegalArgumentException("Kaart mag enkel Harten, Ruiten, Klaveren of Schoppen zijn");
        }
    }

    public String getType(){
        return type;
    }

    protected void setNummer(int n) throws IllegalArgumentException{
        if (n >= 1 && n <= 13){
            this.nummer = n;
        }else{
            throw new IllegalArgumentException("Kaartnummer moet tussen 1 en 13 zijn");
        }
    }

    public int getNummer(){
        return nummer;
    }

    private void setOmgedraaid(boolean o){
        this.omgedraaid = o;
    }

    public boolean getOmgedraaid(){
            return omgedraaid;
    }

    public void draaiOm(){
            setOmgedraaid(true);
    }
}
